package com.yue.wx.service;

import com.yue.wx.bean.response.*;
import com.yue.wx.common.MessageUtil;

import java.util.*;

/**
 * @author zhengyl
 * @version date：2019年5月23日 下午6:49:59
 * @description ：事件处理类
 */
public class EventDispatcher {
    public static String processEvent(Map<String, String> map) throws Exception {
        String openid = map.get("FromUserName"); // 用户openid
        String mpid = map.get("ToUserName"); // 公众号原始ID
        if (map.get("Event").equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) { // 关注事件
            NewsMessage newmsg = new NewsMessage();
            newmsg.setToUserName(openid);
            newmsg.setFromUserName(mpid);
            newmsg.setCreateTime(new Date().getTime());
            newmsg.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);

            try {
                HashMap<String, String> userinfo = GetUseInfo.Openid_userinfo(openid);
                Article article = new Article();
                article.setDescription("欢迎来到许泰的个人空间：免费提供优质菊花！"); // 图文消息的描述
                article.setPicUrl(userinfo.get("headimgurl")); // 图文消息图片地址
                article.setTitle("尊敬的：" + userinfo.get("nickname") + ",你好！"); // 图文消息标题
                article.setUrl("https://mp.weixin.qq.com/s/n-Hg0mCEm3_8X1RatKgCNQ"); // 图文url链接
                List<Article> list = new ArrayList<Article>();
                list.add(article); // 这里发送的是单图文，如果需要发送多图文则在这里list中加入多个Article即可！
                newmsg.setArticleCount(list.size());
                newmsg.setArticles(list);
                return MessageUtil.newsMessageToXml(newmsg);
            } catch (Exception e) {
                System.out.println("====代码有问题额☺！");
            }
        }

        if (map.get("Event").equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) { // 取消关注事件
            System.out.println("==============这是取消关注事件！");
        }

        if (map.get("Event").equals(MessageUtil.EVENT_TYPE_SCAN)) { // 扫描二维码事件
            System.out.println("==============这是扫描二维码事件！");
        }

        if (map.get("Event").equals(MessageUtil.EVENT_TYPE_LOCATION)) { // 位置上报事件
            System.out.println("==============这是位置上报事件！");
        }

        if (map.get("Event").equals(MessageUtil.EVENT_TYPE_CLICK)) { // 自定义菜单点击事件
            System.out.println("==============这是自定义菜单点击事件！");
            ImageMessage imgmsg = new ImageMessage();
            imgmsg.setToUserName(openid);
            imgmsg.setFromUserName(mpid);
            imgmsg.setCreateTime(new Date().getTime());
            imgmsg.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_Image);
            if (map.get("EventKey").equals("image1")) {
                Image img = new Image();
                img.setMediaId("XaSGlJu5HB_QiPsPDnPMxivD0FvibxQsggajn2s0tjlYYBfIKLj28pJ1fZ9EIrnW");
                imgmsg.setImage(img);
                return MessageUtil.imageMessageToXml(imgmsg);
            } else if (map.get("EventKey").equals("image2")) {
                Image img = new Image();
                img.setMediaId("zVwispm3T-405qmwLV4D7tNpxfJ9bcmjKHyxjFVJt3UaUWQJ1TZnGYnKJfDOgsma");
                imgmsg.setImage(img);
                return MessageUtil.imageMessageToXml(imgmsg);
            } else {
                TextMessage txtmsg = new TextMessage();
                txtmsg.setToUserName(openid);
                txtmsg.setFromUserName(mpid);
                txtmsg.setCreateTime(new Date().getTime());
                txtmsg.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
                txtmsg.setContent("就这，我觉得你这里有问题");
                return MessageUtil.textMessageToXml(txtmsg);
            }
        }

        if (map.get("Event").equals(MessageUtil.EVENT_TYPE_VIEW)) { // 自定义菜单View事件
            System.out.println("==============这是自定义菜单View事件！");
        }

        return null;
    }
}